1. Field of the Invention
The present invention relates generally to data processing systems and in particular to software processes. Still more particularly, the present invention relates to a computer implemented method, apparatus, and computer program code for creating a checkpoint of a software partition in an asynchronous input/output (AIO) environment.
2. Description of the Related Art
A single instance of an operating system may be partitioned into one or more virtual operating system environments. Each virtual operating system environment creates a software partition. A software partition includes a set of processes and a set of states associated with the set of processes. Thus, a software partition is a virtual operating system environment within a single instance of an operating system.
When a server in a network runs one or more software processes, it is often desirable to create a software partition for the software processes, and move the software partition having the software processes from one server to another server. The server where the software partition initially resides is called the departure sever, and the server receiving the software partition is called the arrival server. For example, moving a software partition from the departure sever to the arrival server allows the departure server to be shut down for maintenance while the software processes continue to run on the arrival server.
Moving a software partition involves creating a checkpoint. The information gathered in creating the checkpoint is called checkpoint data. The terms checkpoint and checkpoint data are used interchangeably. The checkpoint data contains information about the software partition, including the state of every process in the software partition on the departure server prior to the move. The checkpoint data may be contained in one or more files. After the software partition is moved to the arrival server, the checkpoint data is used to restore the state of every process in the software partition on the arrival server. The checkpoint data is created by freezing each process in the software partition, and gathering state information for each process while the process is frozen. A process is frozen by temporarily stopping the execution of the process. Freezing each process prior to saving the state of the process ensures that the state of each process is not modified when the process state is saved.
However, if the software partition uses asynchronous input/output, the checkpoint data may not be accurate, because each process in the set of processes may request an asynchronous input/output before the process is frozen. Any asynchronous input/output requests requested before a process is frozen continue in the background after the process is frozen. The input/output requests in the background may modify the state of the process even after the process is frozen, making it difficult to obtain accurate checkpoint data for the software partition.